前言
Logstash数据处理管道有三个阶段:输入→过滤器→输出。输入数据,过滤器处理数据,并将其输出到目的地。输入和输出支持编解码器,可以在数据进入或退出pipeline时对数据进行编码或解码,而无需使用单独的过滤器。总之一句话概括,logstash可以帮助我们对不同来源的数据,进行统一的转换处理,然后输出到指定的地方存储,便于日后的统计和分析,例如:Elasticsearch等。
工作机制
处理流程:
- input插件:数据从file,stdin,redis,kafka等各渠道来源处输入到logstash管道处理器(不同渠道来源处对应不同的INPUT插件);
- filter插件:不同的过滤器插件对输入的数据进行处理,每个FILTER插件功能职责单一;
- output插件:logstash管道处理完成之后,将数据输出到file,elasticsearch等不同的目的地(对应于不同的OUTPUT插件);
input 插件
从不同的输入渠道获取数据,这里以file input插件为例,简单说明其使用。不同的插件设置参数不同,含义不同,具体参照官方插件使用说明。
input { |
filter 插件
grok filter插件,date filter插件使用示例:filter {
grok {
match => ["message", "%{HTTPDATE:logdate}"]
}
date {
match => ["logdate", "dd/MMM/yyyy:HH:mm:ss Z"]
}
}
output 插件
elasticsearch output 插件使用示例:output {
elasticsearch {
host => "192.168.1.111"
protocol => "http"
index => "logstash-%{type}-%{+YYYY.MM.dd}"
index_type => "%{type}"
workers => 5
template_overwrite => true
}
# 可配置多个目的地
.......
}
参考链接
- https://www.elastic.co/guide/en/logstash/5.6/pipeline.html
- https://www.elastic.co/guide/en/logstash/5.6/input-plugins.html
- https://www.elastic.co/guide/en/logstash/5.6/filter-plugins.html
- https://www.elastic.co/guide/en/logstash/5.6/output-plugins.html
- https://www.elastic.co/guide/en/logstash/5.6/codec-plugins.html